AWS CLI コマンドを利用して Windows EC2 インスタンスの EC2Rescue ログ を S3 バケットへ取得してみた
はじめに
テクニカルサポートの 片方 です。
私が所属するチームへ Windows OS の EC2 インスタンスに関する問題が発生してお問い合わせがあった際、EC2Rescue ログの取得をお願いする場合がございます。
当該ログではトラブルシューティングに必要な各種情報について取得可能なため、非常に便利です。
EC2Rescue for Windows Server は、Amazon EC2 Windows Server インスタンス上で動作し、潜在的な問題の診断とトラブルシューティングを行うことができる使いやすいツールです。ログファイルを収集して問題を解決するだけでなく、問題がありそうな部分をプロアクティブに検索することができ、便利です。他のインスタンスから Amazon EBS ルートボリュームを調べて、そのボリュームを使用する Windows Server インスタンスをトラブルシューティングするために必要なログを収集することもできます。EC2Rescue が対処できる一般的な問題は次のとおりです。
・ファイアウォール、リモートデスクトッププロトコル (RDP)、またはネットワークインターフェイスの設定が原因で発生したインスタンス接続の問題
・停止エラー、起動ループ、またはレジストリの破損によって生じたオペレーティングシステムの起動に関する問題
・高度なログ分析とトラブルシューティングが必要な問題
今回は、AWS CLI コマンドを利用して Windows EC2 インスタンスから EC2Rescue ログ を S3 バケットへ取得してみたいと思います。
なお、ご紹介する AWS CLI コマンドから SSM Run Command を実行します。
事前準備
以下の条件が必須です。
- 対象 EC2 インスタンスがマネージドノードとして登録されている
- EC2Rescue ログを保存する S3 バケットが存在する
- 対象 EC2 インスタンスが AWS CLI コマンドで指定された S3 バケットにアクセスできる
今回は SSM のマネージドノードとして登録される方法について割愛させて頂きます。
AWS CLI コマンドで指定された S3 バケットにアクセス可能にする簡単な方法として、対象 EC2 インスタンスにアタッチしているロールに(例: AmazonSSMManagedInstanceCore)以下のポリシーを追加でアタッチしてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": "*"
}
]
}
※ 適宜修正してください。
やってみた
本検証では Windows Server 2016 を搭載した EC2 インスタンスをマネージドノードとして登録されるように起動します。
今回は CloudShell を利用して AWS CLI コマンドを実行します。
検証用の S3 バケットも作成済みです。(my-s3-test-2024-12-01)
AWS CLI コマンド例
$ aws ssm send-command --instance-ids "i-xxxxxxxxxxxxxxx" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --comment "EC2Rescue online log collection to S3" --parameters "Command=CollectLogs, Parameters='S3-Bucket-Name'" --output text
※ 適宜修正してください。
それでは、コマンドを実行します。
AWS CLI コマンド出力例
$ aws ssm send-command --instance-ids "i-011f530338ad1dd0d" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --comment "EC2Rescue online log collection to S3" --parameters "Command=CollectLogs, Parameters='my-s3-test-2024-12-01'" --output text
COMMAND 19414ef3-9769-4280-98c5-39d37987524b EC2Rescue online log collection to S3 0 0 AWSSupport-RunEC2RescueForWindowsTool $DEFAULT 0 2024-12-01T16:48:11.268000+00:00 50 0 ap-northeast-1 2024-12-01T13:48:11.268000+00:00 Pending Pending 1 3600
ALARMCONFIGURATION False
CLOUDWATCHOUTPUTCONFIG False
INSTANCEIDS i-011f530338ad1dd0d
NOTIFICATIONCONFIG
COMMAND CollectLogs
PARAMETERS my-s3-test-2024-12-01
暫くしてから、EC2Rescue ログが取得されているか S3 バケットを確認します。
ありました。合わせてダウンロードして中身を確認します。
成功です!
まとめ
本ブログが誰かの参考になれば幸いです。
参考資料
- EC2Rescue を使用して問題のある Amazon EC2 Windows インスタンスのトラブルシューティングを行う - Amazon Elastic Compute Cloud
- send-command — AWS CLI 2.22.7 Command Reference
- CLI の から AWS のサービスを管理する CloudShell - AWS CloudShell
- EC2Rescue を使用して EC2 Windows インスタンスの問題をトラブルシューティングする | AWS re:Post
- EC2Rescue CLI を使用して問題のある Windows インスタンスのトラブルシューティングを行う - Amazon Elastic Compute Cloud
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。